package org.scs.carleton.ca.pgdt.core.visitor;

import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTArgument;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTClause;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTCut;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTExpression;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTFunctor;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTList;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTLiteral;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTNumber;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTProgram;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTStructure;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTTranslationUnit;
import org.scs.carleton.ca.pgdt.core.parser.nodes.IASTVariable;

/**
 * Common interface for any visitor.  A visitor must be able to visit any of the nodes found in the AST Tree.
 * 
 * @author tessierj
 *
 */
public interface PrologVisitor {
	public boolean visit(IASTArgument argument);
	public boolean visit(IASTClause clause);
	public boolean visit(IASTFunctor functor);
	public boolean visit(IASTList list);
	public boolean visit(IASTNumber number);
	public boolean visit(IASTProgram program);
	public boolean visit(IASTStructure structure);
	public boolean visit(IASTVariable variable);
	public boolean visit(IASTTranslationUnit translationUnit);
	public boolean visit(IASTLiteral literal);
	public boolean visit(IASTCut cut);
	public boolean visit(IASTExpression expression);
}
